The present disclosure describes systems and techniques relating to non-volatile memory.
Devices and systems can store or retrieve data using non-volatile memory such as flash memory. For example, a digital camera can store an image to a non-volatile memory structure. In another example, a digital media player such as an MP3 player can read a digital audio file from non-volatile memory and play the contents of the audio file. Mobile devices such as a mobile phone or a personal digital assistant (PDA) can read data from and write data to one or more non-volatile memory structures.
Devices and systems can perform multiple operations on non-volatile memory such as reading and programming operations. Various types of programming operations can include writing and erasing data. Erasing data in such memory can include marking a data area as invalid or not programmed. Non-volatile memory such as flash memory can be divided into multiple data areas. Each data area can be individually addressed and accessed. Accordingly, an operation can include obtaining an address for one or more data areas or a portion of a data area. Also, a data area can be divided into individual bits or larger aggregate data units such as bytes.
A non-volatile memory structure can include memory cells such as flash memory cells. Various examples of memory cells include a single level cell (SLC) or a multi-level cell (MLC). Memory cells can store data by trapping granulized amounts of charge in, for example, an isolated region of a transistor. Retrieving data from a memory cell can include applying a read voltage to the transistor and subsequently estimating the readout current which is determined by the amount of charge trapped in the cell.
An example of a type of memory cell is a SLC that can store one bit of information. In such a memory cell, the memory cell can hold or not hold a charge to indicate, for example, logic 1 when a charge is stored, and to indicate logic 0, when no charge is stored.
In contrast, MLCs can store more than one bit of information by taking advantage of the ability of such memory cells to hold varying amounts of charge, e.g., charge levels. For example, suppose the maximum number of trapped charge allowed in a multi-level memory cell is Q. Such a cell can store more than one bit of information based on storing a granulized amount of charge between 0 and Q. A controller can estimate an amount of charge stored during readout of the cell. Thus, for example, two bits of information can be stored in one multi-level memory cell by trapping any one of, for example, four levels of charges: 0, Q/3, 2Q/3, Q. This process of trapping charges can be referred to as programming.